#include "worker.h"
#include "threadPool.h"
int tidArrInit(tidArr_t * ptidArr,int workerNum)
{
    // 将传入的tid数组信息，初始化
    ptidArr->arr = (pthread_t *)calloc(workerNum,sizeof(pthread_t));
    ptidArr->workerNum = workerNum;
    return 0;
}
void * threadFunc(void * arg)
{
    // 将主线程传递的数据结构，进行强制类型转化
    threadPool_t * pthreadPool = (threadPool_t *)arg;
    while(1)
    {
        pthread_mutex_lock(&pthreadPool->mutex);
        int netfd;
        while(pthreadPool->taskQueue.queuSize <= 0)
        {
            // 当队列中没有任务的时候，子线程等待
            pthread_cond_wait(&pthreadPool->cond,&pthreadPool->mutex);
        }
        // 当跳出循环的时候，说明主线程与子线程共享的队列是有数据的
        netfd = pthreadPool->taskQueue.pFront->netfd;
        printf("I am worker,I got a netfd = %d\n",netfd);
        deQueue(&pthreadPool->taskQueue);
        pthread_mutex_unlock(&pthreadPool->mutex);
// 在线程池中，主线程的工作就是创建子线程，并且将每一个客户端连接通过队列传递给子线程
// 子线程接下来则发送文件给已经接入的客户端
        transFile(netfd);
        close(netfd);
    }
}

